<!DOCTYPE html>
<html lang="ar">
	<head>
		<meta charset="utf-8" />
		<base href="../../../" />
		<script src="page.js"></script>
		<link type="text/css" rel="stylesheet" href="page.css" />
	</head>
	<body class="rtl">
		<h1>[name]</h1>
	
		<p>
			تمثيل شبكة ، خط ، أو هندسة نقطية. يتضمن مواقع الرأس ، ومؤشرات الوجه ، والمعايير ، والألوان ، والأشعة فوق البنفسجية ، والسمات المخصصة
			داخل المخازن المؤقتة ، مما يقلل من تكلفة تمرير كل هذه البيانات إلى وحدة معالجة الرسومات.
		</p>
		<p>
			لقراءة وتحرير البيانات في سمات BufferGeometry ، راجع
			[page:BufferAttribute] التوثيق.
		</p>
	
		<h2>مثال للكود</h2>
	
		<code>
		const geometry = new THREE.BufferGeometry();
	
		// إنشاء شكل مربع بسيط. نحن نكرر الأعلى الأيسر والأسفل الأيمن
		// الرؤوس لأن كل رأس يحتاج إلى الظهور مرة واحدة لكل مثلث.
		const vertices = new Float32Array( [
			-1.0, -1.0,  1.0, // v0
			 1.0, -1.0,  1.0, // v1
			 1.0,  1.0,  1.0, // v2
	
			 1.0,  1.0,  1.0, // v3
			-1.0,  1.0,  1.0, // v4
			-1.0, -1.0,  1.0  // v5
		] );
	
		// itemSize = 3 لأنه يوجد 3 قيم (مكونات) لكل رأس
		geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
		const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
		const mesh = new THREE.Mesh( geometry, material );
		</code>
	
		<h2>مثال للكود (Index)</h2>
	
		<code>
		const geometry = new THREE.BufferGeometry();
	
		const vertices = new Float32Array( [
			-1.0, -1.0,  1.0, // v0
			 1.0, -1.0,  1.0, // v1
			 1.0,  1.0,  1.0, // v2
			-1.0,  1.0,  1.0, // v3
		] );
	
		const indices = [
			0, 1, 2,
			2, 3, 0,
		];
	
		geometry.setIndex( indices );
		geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );

		const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
		const mesh = new THREE.Mesh( geometry, material );
		</code>

		<h2>أمثلة (Examples)</h2>
		<p>
			[example:webgl_buffergeometry شبكة بوجوه غير مفهرسة]<br />
			[example:webgl_buffergeometry_indexed شبكة بوجوه مفهرسة]<br />
			[example:webgl_buffergeometry_lines خطوط]<br />
			[example:webgl_buffergeometry_lines_indexed خطوط مفهرسة]<br />
			[example:webgl_buffergeometry_custom_attributes_particles جزيئات]<br />
			[example:webgl_buffergeometry_rawshader محركات الظل الخام]
		</p>
		 
		<h2>المنشئ (Constructor)</h2>
		 
		<h3>[name]()</h3>
		<div>
			ينشئ هذا [name] جديدًا. كما يضبط العديد من الخصائص على قيمة افتراضية
			قيمة.
		</div>
		 
		<h2>الخصائص (Properties)</h2>
		 
		<h3>[property:Object attributes]</h3>
		<p>
			يحتوي هذا الخريطة القائمة على الهوية على اسم السمة المراد تعيينها وكقيمة
			[page:BufferAttribute buffer] لتعيينه. بدلاً من الوصول إلى هذا
			الملكية مباشرة ، استخدم [page:.setAttribute] و [page:.getAttribute] ل
			الوصول إلى سمات هذه الهندسة.
		</p>
		 
		<h3>[property:Box3 boundingBox]</h3>
		<p>
			مربع التحديد لـ bufferGeometry ، والذي يمكن حسابه بـ
			[page:.computeBoundingBox](). الافتراضي هو `null`.
		</p>
		 
		<h3>[property:Sphere boundingSphere]</h3>
		<p>
			كرة التحديد لـ bufferGeometry ، والتي يمكن حسابها بـ
			[page:.computeBoundingSphere](). الافتراضي هو `null`.
		</p>
		 
		<h3>[property:Object drawRange]</h3>
		<p>
			يحدد جزء الهندسة المراد عرضه. يجب عدم تعيين هذا
			مباشرة ، بدلاً من ذلك استخدم [page:.setDrawRange]. الافتراضي هو
			<code>
			{ start: 0, count: Infinity }
			</code>
			بالنسبة لـ BufferGeometry غير المفهرس ، count هو عدد القمم التي يتم عرضها.
			بالنسبة لـ BufferGeometry المفهرس ، count هو عدد المؤشرات التي يتم عرضها.
		</p>
		 
		<h3>[property:Array groups]</h3>
		 
		<p>
			قسم الهندسة إلى مجموعات ، كل منها سيتم عرضه في
			مكالمة WebGL رسم منفصلة. هذا يسمح باستخدام مجموعة من المواد
			مع الهندسة. <br /> <br />
			 
			كل مجموعة هي كائن من الشكل:
			<code>
			{ start: Integer, count: Integer, materialIndex: Integer }
			</code>
			حيث يحدد start العنصر الأول في هذه المكالمة - الأول
			رأس للهندسة غير المفهرسة ، وإلا فإن المثلث الأول فهرس. عد
			يحدد كم عدد القمم (أو المؤشرات) المضمنة ، و materialIndex
			يحدد فهرس مجموعة المواد للاستخدام. <br /> <br />
			 
			استخدم [page:.addGroup] لإضافة مجموعات ، بدلاً من تعديل هذا المصفوفة
			مباشرة. <br /> <br />
			 
			يجب أن ينتمي كل رأس وفهرس إلى مجموعة واحدة فقط - يجب ألا تشترك المجموعات
			قمم أو مؤشرات ، ويجب ألا تترك القمم أو المؤشرات غير المستخدمة.
		</p>
			 
		<!-- ملاحظة: كانت المجموعات تسمى drawCalls
			 
		<h3>[property:Array drawcalls]</h3>
		<p>
		بالنسبة للهندسات التي تستخدم المثلثات المفهرسة ، يمكن استخدام هذا المصفوفة لتقسيم الكائن
		إلى عدة مكالمات رسم WebGL. سترسم كل مكالمة رسم بعض الفئات الفرعية من القمم
		في هذه الهندسة باستخدام [page:Material shader] المكون. قد يكون هذا ضروريًا إذا ،
		على سبيل المثال ، لديك أكثر من 65535 رأسًا في كائنك.
		</p> -->
			 
		<h3>[property:Integer id]</h3>
		<p>رقم فريد لهذا الحال bufferGeometry.</p>
			 
		<h3>[property:BufferAttribute index]</h3>
		<p>
			يتيح إعادة استخدام القمم عبر مثلثات متعددة ؛ هذا هو
			يسمى باستخدام "المثلثات المفهرسة". يرتبط كل مثلث بـ
			مؤشرات ثلاث قمم. لذلك تخزن هذه السمة فهرس
			كل رأس لكل وجه ثلاثي الأضلاع. إذا لم يتم تعيين هذه السمة ، فإن
			[page:WebGLRenderer renderer] يفترض أن كل ثلاثة مواقع متجاورة
			تمثل مثلثًا واحدًا. الافتراضي هو `null`.
		</p>
				 
		<h3>[property:Boolean isBufferGeometry]</h3>
		<p>علامة للقراءة فقط للتحقق مما إذا كان الكائن المحدد من نوع [name].</p>
				 
		<h3>[property:Object morphAttributes]</h3>
		<p>
			خريطة قائمة على [page:BufferAttribute]s التي تحمل تفاصيل هندسة المورف
			الأهداف. <br />
			ملاحظة: بمجرد عرض الهندسة ، لا يمكن تغيير بيانات سمة المورف
			يتغير. سيتعين عليك الاتصال [page:.dispose]() ، وإنشاء جديد
			نسخة من [name].
		</p>
				 
		<h3>[property:Boolean morphTargetsRelative]</h3>
		<p>
			يستخدم للتحكم في سلوك هدف المورف ؛ عند تعيينه على true ، المورف
			يتم التعامل مع بيانات الهدف كإزاحات نسبية ، بدلاً من كـ
			المواقع / المعايير المطلقة. الافتراضي هو `false`.
		</p>
				 
		<h3>[property:String name]</h3>
		<p>
			اسم اختياري لهذه الحالة bufferGeometry. الافتراضي هو فارغ
			سلسلة.
		</p>
				 
		<h3>[property:Object userData]</h3>
		<p>
			كائن يمكن استخدامه لتخزين بيانات مخصصة حول BufferGeometry.
			يجب ألا يحتوي على مراجع للوظائف حيث لن يتم استنساخها.
		</p>
				 
		<h3>[property:String uuid]</h3>
		<p>
			[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] من
			هذه الحالة كائن. يتم تعيين هذا تلقائيًا ولا يجب أن يكون
			تحرير.
		</p>
		
		<h2>الوظائف (Methods)</h2>
				 
		<p>
			[page:EventDispatcher EventDispatcher] الطرق متوفرة على هذا
			صف.
		</p>
				 
		<h3>[method:undefined addGroup]([param:Integer start]، [param:Integer count]، [param:Integer materialIndex])</h3>
		<p>
			يضيف مجموعة إلى هذه الهندسة ؛ انظر [page:BufferGeometry.groups groups]
			خاصية للحصول على التفاصيل.
		</p>
				 
		<h3>[method:this applyMatrix4]([param:Matrix4 matrix])</h3>
		<p>تطبق تحويل المصفوفة على الهندسة.</p>
				 
		<h3>[method:this applyQuaternion]([param:Quaternion quaternion])</h3>
		<p>يطبق التدوير الممثل بالرباعي على الهندسة.</p>

		<h3>[method:this center] ()</h3>
		<p>مركز الهندسة بناءً على مربع التحديد.</p>
				 
		<h3>[method:undefined clearGroups]( )</h3>
		<p>يمسح جميع المجموعات.</p>
				 
		<h3>[method:BufferGeometry clone]()</h3>
		<p>ينشئ نسخة من هذا BufferGeometry.</p>
				 
		<h3>[method:undefined computeBoundingBox]()</h3>
		<p>
			يحسب مربع التحديد للهندسة ، ويحدث [page:.boundingBox]
			سمة. <br />
			لا يتم حساب مربعات التحديد افتراضيًا. يجب حسابها بشكل صريح
			حساب ، وإلا كانت `null`.
		</p>
				 
		<h3>[method:undefined computeBoundingSphere]()</h3>
		<p>
			يحسب كرة التحديد للهندسة ، ويحدث [page:.boundingSphere]
			سمة. <br />
			لا تتم حساب كرات التحديد افتراضيًا. يجب حسابها بشكل صريح
			حساب ، وإلا كانت `null`.
		</p>
				 
		<h3>[method:undefined computeTangents]()</h3>
		<p>
			يحسب ويضيف سمة مماسية لهذه الهندسة. <br />
			الحساب مدعوم فقط للهندسات المفهرسة وإذا تم تعريف الوضعية ،
			الطبيعية ، والأشعة فوق البنفسجية. عند استخدام خريطة طبيعية للفضاء المماس
			خريطة ، تفضل خوارزمية MikkTSpace المقدمة من قبل
			[page:BufferGeometryUtils.computeMikkTSpaceTangents] بدلاً من ذلك.
		</p>
				 
		<h3>[method:undefined computeVertexNormals]()</h3>
		<p>تحسب قمم الأوجه للبيانات القمية المعطاة. بالنسبة للهندسات المفهرسة ، يضبط الأسلوب كل قمة عادية لتكون متوسط ​​أوجه الوجه التي تشارك هذه القمة.
		بالنسبة للهندسات غير المفهرسة ، لا تتشارك القمم ، ويضبط الأسلوب كل قمة عادية لتكون نفس وجه الوجه.</p>
				 
		<h3>[method:this copy]( [param:BufferGeometry bufferGeometry] )</h3>
		<p>ينسخ BufferGeometry آخر إلى هذا BufferGeometry.</p>
				 
		<h3>[method:BufferAttribute deleteAttribute]( [param:String name] )</h3>
		<p>تحذف [page:BufferAttribute attribute] بالاسم المحدد.</p>
				 
		<h3>[method:undefined dispose]()</h3>
		<p>
			يطلق الموارد المتعلقة بوحدة معالجة الرسومات التي تم تخصيصها من قبل هذا المثيل. اتصل بهذا
			الأسلوب كلما لم يعد هذا المثيل مستخدمًا في تطبيقك.
		</p>
				 
		<h3>[method:BufferAttribute getAttribute]( [param:String name] )</h3>
		<p>يرجع [page:BufferAttribute attribute] بالاسم المحدد.</p>

		<h3>[method:BufferAttribute getIndex] ()</h3>
		<p>يرجع [page:.index] buffer.</p>
				 
		<h3>[method:Boolean hasAttribute]( [param:String name] )</h3>
		<p>يعود `true` إذا كانت السمة بالاسم المحدد موجودة.</p>
				 
		<h3>[method:this lookAt] ( [param:Vector3 vector] )</h3>
		<p>
			vector - نقطة عالمية للنظر إليها. <br /> <br />
				 
			يدور الهندسة لمواجهة نقطة في الفضاء. يتم هذا عادةً كـ
			عملية واحدة ، وليس أثناء حلقة. استخدم [page:Object3D.lookAt] لـ
			الاستخدام النموذجي للشبكة في الوقت الفعلي.
		</p>
				 
		<h3>[method:undefined normalizeNormals]()</h3>
		<p>
			سيكون كل متجه طبيعي في هندسة بقوة 1. هذا سوف
			تصحح الإضاءة على سطوح الهندسة.
		</p>
				 
		<h3>[method:this rotateX] ( [param:Float radians] )</h3>
		<p>
			قم بتدوير الهندسة حول المحور X. يتم هذا عادةً كعملية واحدة
			عملية ، وليس أثناء حلقة. استخدم [page:Object3D.rotation] لـ
			تدوير شبكة نموذجية في الوقت الفعلي.
		</p>
				 
		<h3>[method:this rotateY] ( [param:Float radians] )</h3>
		<p>
			قم بتدوير الهندسة حول المحور Y. يتم هذا عادةً كعملية واحدة
			عملية ، وليس أثناء حلقة. استخدم [page:Object3D.rotation] لـ
			تدوير شبكة نموذجية في الوقت الفعلي.
		</p>
				 
		<h3>[method:this rotateZ] ( [param:Float radians] )</h3>
		<p>
			قم بتدوير الهندسة حول المحور Z. يتم هذا عادةً كعملية واحدة
			عملية ، وليس أثناء حلقة. استخدم [page:Object3D.rotation] لـ
			تدوير شبكة نموذجية في الوقت الفعلي.
		</p>
				 
		<h3>[method:this scale] ( [param:Float x], [param:Float y], [param:Float z] )</h3>
		<p>
			قم بتغيير حجم بيانات الهندسة. يتم هذا عادةً كعملية واحدة ،
			وليس أثناء حلقة. استخدام [page:Object3D.scale] لـ
			تغيير حجم شبكات نموذجية في الوقت الفعلي.
		</p>
				 
		<h3>[method:this setAttribute]( [param:String name], [param:BufferAttribute attribute] )</h3>
		<p>
			يضع سمة لهذه الهندسة. استخدام هذا بدلاً من خصائص
			الملكية ، لأن خريطة قائمة داخلية من [page:.attributes]
			يتم صيانته لتسريع التكرار على السمات.
		</p>
				 
		<h3>[method:undefined setDrawRange] ( [param:Integer start], [param:Integer count] )</h3>
		<p>
			قم بتعيين خاصية [page:.drawRange]. بالنسبة لـ BufferGeometry غير المفهرس ، count
			هو عدد القمم التي يتم عرضها. بالنسبة لـ BufferGeometry المفهرس ، count هو
			عدد المؤشرات التي يتم عرضها.
		</p>
				 
		<h3>[method:this setFromPoints] ( [param:Array points] )</h3>
		<p>تضبط سمات هذا BufferGeometry من مصفوفة من النقاط.</p>
				 
		<h3>[method:this setIndex] ( [param:BufferAttribute index] )</h3>
		<p>ضبط buffer [page:.index].</p>
				 
		<h3>[method:Object toJSON]()</h3>
		<p>
			قُم بتحويل هندسة buffer إلى three.js
			[link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].
		</p>
				 
		<h3>[method:BufferGeometry toNonIndexed]()</h3>
		<p>إرجاع إصدار غير مفهرس من BufferGeometry المفهرس.</p>
				 
		<h3>[method:this translate] ( [param:Float x], [param:Float y], [param:Float z] )</h3>
		<p>
			قُم بترجمة الهندسة. يتم هذا عادةً كعملية واحدة ،
			وليس أثناء حلقة. استخدم [page:Object3D.position] لـ
			ترجمة شبكات نموذجية في الوقت الفعلي.
		</p>
					 
		<h2>المصدر (Source)</h2>

		<p>
			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
		</p>
	</body>
</html>
